package com.datastructure3.binarytree.outher;


import org.junit.Test;

import java.util.ArrayList;

/**
 * @author: 临晖
 * @since: 2024-08-02
 */
public class Solution {
    /**
     * 559. N 叉树的最大深度
     * 已解答
     * 简单
     * 相关标签
     * 相关企业
     * 给定一个 N 叉树，找到其最大深度。
     * 最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。
     * N 叉树输入按层序遍历序列化表示，每组子节点由空值分隔（请参见示例）。
     *
     * @param root
     * @return
     */
    public int maxDepth(Node root) {
        if (root == null) {
            return 0;
        }

        int max = Integer.MIN_VALUE;
        if (root.children.size() != 0) {
            for (int i = 0; i < root.children.size(); i++) {
                int depth = maxDepth(root.children.get(i));
                max = Math.max(max , depth);
            }
        } else {
            return 1;
        }


        return max + 1;
    }


    @Test
    public void myTest() {
        Node node1 = new Node();

        Node node2 = new Node();
        Node node3 = new Node();
        Node node4 = new Node();

        Node node5 = new Node();
        Node node6 = new Node();
        Node node7 = new Node();

        node1.children = new ArrayList<>();
        node1.children.add(node2);
        node1.children.add(node3);
        node1.children.add(node4);

        node2.children = new ArrayList<>();
        node2.children.add(node5);

        node3.children = new ArrayList<>();
        node3.children.add(node6);
        node3.children.add(node7);

        node4.children= new ArrayList<>();
        node5.children= new ArrayList<>();
        node6.children= new ArrayList<>();
        node7.children= new ArrayList<>();
        maxDepth(node1);


    }
}
